<?php
//include_once('DB.class.php');

class Strona{
	protected $BD, $Serwis, $Uzytkownik, $Kategoria, $News, $Smarty, $Buxter;
	protected $nazwa_strony, $opis, $stopka, $liczba_newsow, $przyjaciele, $reklama, $komunikat, $zalogowany, $styl, $ostatnio_czytany_news;
	protected $Kategoria_Dane, $Serwis_Dane;
	
	function __construct(){
		$this->BD = DB::get();
		//require_once('serwis.class.php');
		$this->Serwis = new Serwis();
		//require_once('uzytkownik.class.php');
		$this->Uzytkownik = new Uzytkownik();
		//require_once('kategoria.class.php');
		$this->Kategoria = new Kategoria();
		//require_once('news.class.php');
		$this->News = new News();
		//require_once('bot.class.php');
		$this->Buxter = new Buxter();
		
		require_once('Smarty.class.php');
		$this->Smarty = new Smarty;
		$this->Smarty->template_dir = 'szablony';
		$this->Smarty->compile_dir = 'szablony_c';
		$this->Smarty->cache_dir = 'cache';
		$this->Smarty->caching = false;
		$this->Smarty->cache_lifetime = 30;
		
		$wynik = $this->BD->Zapytanie("SELECT * FROM `glowne_ustawienia` ORDER BY `id_ustawienie` DESC;", true, true);
		$wynik = $wynik[0];
		$this->nazwa_strony = $wynik['nazwa'];
		$this->liczba_newsow = $wynik['newsow_na_glownej'];
		$this->stopka = $wynik['stopka'];
		$this->przyjaciele = $wynik['przyjaciele'];
		$this->reklama = $wynik['reklama'];
		$this->komunikat = $wynik['komunikat'];
		//if(!empty($_SESSION['uprawnienia'])) $this->zalogowany = 'tak';
		
		$tmp = $this->Kategoria->Dane(false);
		foreach ($tmp as $nr => $dane){
			$this->Kategoria_Dane[$dane['id_kategoria']] = $dane;
		}
		$tmp = array();
		$tmp = $this->Serwis->Dane(false);
		foreach ($tmp as $nr => $dane){
			$this->Serwis_Dane[$dane['id_serwis']] = $dane;
		}
		
		if (!empty($_COOKIE['zalogowany'])) {
			if ($_COOKIE['zalogowany'] == 1) $this->zalogowany = 'tak';
			else $this->zalogowany = 'nie';
		}
		else $this->zalogowany = 'nie';
		session_register('doWyczyszczenia');
		
		/*
		if (!empty($_COOKIE['styl'])){ 
			$this->styl = $_COOKIE['styl'];
			setcookie('styl', $this->styl, time()+7*3600);
		}
		else $this->styl = 'bialy';
		*/
		
		if (empty($_COOKIE['ostatni_news'])) $this->ostatnio_czytany_news = 0;
		else $this->ostatnio_czytany_news = $_COOKIE['ostatni_news'];
		
		//$this->osob_online = $this->online();
	}
	
	public function Glowna(){
		$this->Smarty->assign('tytul', $this->nazwa_strony);
		if (!empty($_GET['do'])) $do = $_GET['do'];
		else $do = 'nic';
		switch($do){
			case 'rejestracja' : $this->RejestracjaUzytkownika(); break;
			case 'logowanie' : {
				$this->LogowanieUzytkownika(); 
				//$this->StronaGlowna(); 
			} break;
			case 'panel_uzytkownika' :{
				echo 'Tymczasowo wylaczone...';
				//$this->PanelUzytkownika();
			} break;
			case 'wyloguj' : {
				session_destroy();
				session_start();
				$this->Uzytkownik->Wyloguj();
				$this->zalogowany = 'nie';
				$this->StronaGlowna();
			} break;
			case 'news' : {
				$this->StronaGlowna();
				//$this->CzytajNews();
			} break;
			case 'news-top5' : {
				$this->NewsTop();
			} break;
			case 'serwisy' : {
				//echo 'Tymczasowo wylaczone...';
				$this->SpisSerwisow();
			} break;
			case 'statystyki' : {
				$this->Statystyki();
			} break;
			case 'administracja' : $this->PanelAdministratora(); break;
			case 'buxter' : {
				//echo 'TAK';
				$this->Buxter(); 
			} break;
			case 'rss' : {
				$this->RSS();
			} break;
			case 'znajdz' : {
				$this->Znalezione();
			} break;
			case 'styl' : {
				$this->Styl();	
			}
			default : {
				if (!empty($_SESSION['doWyczyszczenia'])) $this->WyczyscSesje();
				else $_SESSION['doWyczyszczenia'] = array();
				//$this->SprawdzUprawnienia();
				$this->StronaGlowna();
			} break;
		}
		//print_r($_SESSION);
		
	}
	
	private function StronaGlowna(){	
		//$this->Smarty->caching = false;	
		$dane['liczba'] = $this->liczba_newsow; // liczba newsow na glownej
		$dane['strona'] = empty($_GET['str']) ? 1 : $_GET['str'];
		$this->Smarty->assign('strona', $dane['strona']);
		$adres = '';
		if (!empty($_GET['kategoria'])){ 
			//echo 'ustawiam adres kategorii, ';
			$dane['id_kategoria'] = $_GET['kategoria'];
			$adres .= "&kategoria=".$dane['id_kategoria'];
			$this->Smarty->assign('komunikat_newsy', 'kategoria');
			$this->Smarty->assign('id_kategoria', $dane['id_kategoria']);
			$this->nazwa_strony = $this->Kategoria_Dane[$dane['id_kategoria']]['opis'];
		}
		if (!empty($_GET['serwis'])){ 
			//echo 'ustawiam adres serwisu, ';
			$dane['id_serwis'] = $_GET['serwis'];
			$adres .= "&serwis=".$dane['id_serwis'];
			$this->Smarty->assign('komunikat_newsy', 'serwis');
			$this->Smarty->assign('id_serwis', $dane['id_serwis']);
		};
		$this->Smarty->assign('adres', $adres);
		if(!empty($_GET['nr'])){ 
			$dane['id_news'] = $_GET['nr'];
			$this->Smarty->assign('tylko_jeden', 'tak');
			//$this->KlikniecieNewsa();
		}
		$newsy = $this->News->Pokaz($dane);
		if(!empty($_GET['nr'])){ 
			$this->nazwa_strony = $newsy[0]['tytul'];	
		}
		$liczba_wszystkich = $newsy['liczba_wszystkich'];
		//if ($liczba_wszystkich > 10*$this->liczba_newsow) $liczba_wszystkich = 100*$this->liczba_newsow;
		unset($newsy['liczba_wszystkich']);
		$this->Smarty->assign('podzial_na_strony', $this->PodzialNaStrony($liczba_wszystkich, $this->liczba_newsow));
		unset($newsy[$liczba_wszystkich]);
		//print_r($newsy);
		$this->Smarty->assign('newsy', $newsy);
		
		$this->Smarty->assign('kat', $this->Kategoria_Dane);
		
		//print_r($this->Kategoria_Dane);
		//$id_uzytkownik = empty($_SESSION['id_uzytkownik']) ? '0' : $_SESSION['id_uzytkownik'];
		//$this->Smarty->assign('id_uzytkownik', $id_uzytkownik);
		
		$this->Naglowek();
		$this->Menu();
		$this->Smarty->display('newsy.tpl');
		$this->Stopka();
	}
	
	private function Naglowek(){
		$this->Smarty->assign('tytul_strony', $this->nazwa_strony);
		$id_uzytkownik = empty($_SESSION['id_uzytkownik']) ? '0' : $_SESSION['id_uzytkownik'];
		$this->Smarty->assign('id_uzytkownik', $id_uzytkownik);
		$this->Smarty->assign('zalogowany', $this->zalogowany); //isset($_COOKIE['zalogowany'])?'tak':'nie');
		$this->Smarty->assign('liczba_newsow', $this->News->Liczba('newsow'));
		//$this->Smarty->assign('liczba_klikniec', $this->News->Liczba('klikniec'));
		$this->Smarty->assign('liczba_klikniec_wczoraj', $this->News->StatKlikniecPokaz());
		$this->Smarty->assign('liczba_serwisow', $this->Serwis->Liczba('serwisow'));
		$this->Smarty->assign('serw', $this->Serwis_Dane);
		//$this->Smarty->assign('on_line', $this->online());
		
		/* pliki ze stylami */
		/*
		$plik_stylu1; 
		$plik_stylu2;
		switch ($this->styl){
			case 'bialy' : {
				$plik_stylu1 = 'style.css'; 
				$plik_stylu2 = 'style_czarny.css';
			} break;
			case 'czarny' : {
				$plik_stylu1 = 'style_czarny.css'; 
				$plik_stylu2 = 'style.css'; 
			} break;
		}
		$this->Smarty->assign('styl1', $plik_stylu1);
		$this->Smarty->assign('styl2', $plik_stylu2);
		*/
		
		$this->Smarty->display('naglowek.tpl');
	}
	
	private function Menu(){
		//$this->Smarty->assign('kategorie', $this->Kategoria_Dane);
		$katdzial = $this->Kategoria->DaneDzialami();
		$this->Smarty->assign('katdzial', $katdzial);
		$this->Smarty->assign('przyjaciele', $this->przyjaciele);
		$this->Smarty->assign('reklama', $this->reklama);
		$this->Smarty->assign('komunikat_glowny', $this->komunikat);
		$this->Smarty->display('menu.tpl');
	}
	
	private function Stopka(){
		$this->Smarty->assign('newsytop5w',  $this->News->Statystyki('newsy', 'wczoraj', 'klikniecia', 5));
		$this->Smarty->assign('newsytop5d',  $this->News->Statystyki('newsy', 'dzisiaj', 'klikniecia', 5));
		$this->Smarty->assign('stopka', $this->stopka);
		$this->Smarty->display('stopka.tpl');
	}
	
	private function KlikniecieNewsa(){
		if (empty($_SESSION['tKlikniecia'])){ // pierwsze klikniecie w tej sesji
			$_SESSION['tKlikniecia'] = array();
			if ($this->News->Klikniecie($id_news)){
				//echo $id_news;
				$_SESSION['tKlikniecia'][0] = $id_news;
				if ($id_uzytkownik != false) $this->Uzytkownik->ZliczKlikniecie($id_uzytkownik);
			}
			else echo 'blad';
		}
		else{
			//echo 'bylo klikniete, ';
			$powtorne_klikniecie = false;
			$i = 0;
			foreach ($_SESSION['tKlikniecia'] as $id){
				if ($id == $id_news) $powtorne_klikniecie = true;
				$i++;
			}
			if (!$powtorne_klikniecie){
				//echo 'ale nie w tego newsa, ';
				if ($this->News->Klikniecie($id_news)){ 
					//echo $id_news;
					$_SESSION['tKlikniecia'][$i+1] = $id_news;
					if ($id_uzytkownik != false) $this->Uzytkownik->ZliczKlikniecie($id_uzytkownik);
				}
				else echo 'blad';
			}
			else{
				//echo 'powtorne klikniecie';
			}
		}
	}
	
	private function Buxter(){
		$uprawnienia = empty($_SESSION['uprawnienia'])?0:$_SESSION['uprawnienia'];
		if ($uprawnienia == 2){
			//echo 'buxter, ';
			$akcja = empty($_GET['akcja']) ? '' : $_GET['akcja'];
			if($akcja != 'nowe'){
				$this->Naglowek();
				$this->Menu();
				$this->Buxter->Start();
				$this->Stopka();
			}
			else $this->Buxter->Start();
		}
	}
	
	private function PodzialNaStrony($wszystkichWiadomosci, $wiadomosciNaStronie){
		//echo $wszystkichWiadomosci.' - '.$wiadomosciNaStronie;
		$str = 1;
		for ($i = $wszystkichWiadomosci; $i > 0; $i-=$wiadomosciNaStronie){
			 //$podzial[$str] = $i;
			 $podzial[$str] = $str;
			 $str++;
		}
		//print_r($podzial);
		//print_r($podzial);
		return $podzial; 
	}
	
	private function Styl(){
		switch ($_GET['typ']){
			case 'bialy' : {
				setcookie('styl', 'bialy', time()+7*3600);
				$this->styl = 'bialy';
			} break;
			case 'czarny' : {
				setcookie('styl', 'czarny', time()+7*3600);
				$this->styl = 'czarny';
			}
		}
	}

	private function SpisSerwisow(){
		$this->Smarty->assign('serwisy', $this->Serwis_Dane);
		$this->Naglowek();
		$this->Menu();
		$this->Smarty->display('serwisy.tpl');
		$this->Stopka();
	}
	
	private function RejestracjaUzytkownika(){
		$etap = (empty($_POST['etap'])) ? 0 : $_POST['etap'];
		if ($etap == 2 && !isset($_SESSION['zarejestrowano'])){
			$dane['nick'] = $_POST['nick'];
			$dane['email'] = $_POST['email'];
			$dane['haslo'] = $_POST['haslo'];
			//print_r($dane);
			if ($this->Uzytkownik->Dodaj($dane)){ 
				$this->Smarty->assign('komunikat', 'Rejestracja przebiegla pomyslnie.');
				session_register('zarejestrowano');
				$_SESSION['zarejestrowano'] = 'tak';
				$_SESSION['doWyczyszczenia']['zarejestrowano'] = 1;
			}
			else $this->Smarty->assign('komunikat', 'Nie mozna zarejestrowac uzytkownika.');
		}
		$rejestracja = empty($_SESSION['zarejestrowano']) ? '' : $_SESSION['zarejestrowano'];
		if ($rejestracja == 'tak') $this->Smarty->assign('komunikat', 'Nie odswiezaj strony. Rejestracja sie juz zakonczyla.');
		$this->Naglowek();
		$this->Menu();
		$this->Smarty->display('uzytkownik_rejestracja.tpl');
		$this->Stopka();
	}
	
	private function LogowanieUzytkownika(){
		//echo 'probuje zalogowac, ';
		if (!empty($_POST)){
			if($this->Uzytkownik->Zaloguj($_POST)){
				$this->Smarty->assign('komunikat', 'Zostales zalogowany.');
				$this->zalogowany = 'tak';
				//$this->Smarty->assign('zalogowany', 'tak');
				
			}
			else $this->Smarty->assign('komunikat', 'Logowanie sie nie powiodlo.');
		}
		else $this->Smarty->assign('komunikat', 'Wprowadz swoje dane.');
		$this->Naglowek();
		$this->Menu();
		$this->Smarty->display('uzytkownik_logowanie.tpl');
		$this->Stopka();
	}
	
	private function Znalezione(){
		$wynik = $this->News->Znajdz($_GET['szukam']);
		$this->Smarty->assign('wynik', $wynik);
		$this->Smarty->assign('szukane', $_GET['szukam']);
		//print_r($wynik);
		
		$this->Smarty->assign('serw', $this->Serwis_Dane);
		$this->Smarty->assign('kat', $this->Kategoria_Dane);
		$this->Naglowek();
		$this->Menu();
		$this->Smarty->display('znalezione.tpl');
		$this->Stopka();
	}
	
	private function WyczyscSesje(){
		//echo 'sprawdzam czy sa jakies zmienne do czyszczenia, ';
		//print_r($_SESSION);
		if (!empty($_SESSION['doWyczyszczenia'])) foreach ($_SESSION['doWyczyszczenia'] as $nazwa => $wartosc){
			//echo 'czyszcze zmienna '.$nazwa.', ';
			session_unregister($nazwa);
		}
		session_unregister('doWyczyszczenia');
	}
	
	private function SprawdzUprawnienia(){
		if($this->Uzytkownik->Zaloguj()){
				//$this->Smarty->assign('komunikat', 'Zostales zalogowany.');
				$this->Smarty->assign('zalogowany', 'tak');
			}
	}
	
	private function PanelUzytkownika(){
		$this->Smarty->caching = false;
		$uprawnienia = empty($_SESSION['uprawnienia'])?0:$_SESSION['uprawnienia'];
		if ($uprawnienia == 0) $this->Smarty->assign('id_uzytkownik', 0);
		else $this->Smarty->assign('id_uzytkownik', $_SESSION['id_uzytkownik']);
		$this->Smarty->assign('uprawnienia', $uprawnienia);
		$this->Smarty->assign('komunikat', 'Czyn swoja powinnosc.');
		$this->Naglowek();
		$this->Menu();
		if ($uprawnienia >= 1){ 
			$akcja = empty($_GET['akcja'])?'':$_GET['akcja'];
			$etap = empty($_POST['etap'])?'1':$_POST['etap'];
			switch(empty($_GET['sekcja'])?'':$_GET['sekcja']){
				case 'dane' : 	$this->UzytkownikDane($akcja, $etap); break;
				default : {
					if (!empty($_SESSION['doWyczyszczenia'])) $this->WyczyscSesje();
					$this->Smarty->display('uzytkownik_glowna.tpl'); 
				} break;
			}
		}
		else $this->Smarty->display('uzytkownik_glowna.tpl');
		$this->Stopka();
	}
	
	private function UzytkownikDane($akcja, $etap){
		$this->Smarty->assign('etap', $etap);
		switch($akcja){
			case 'pokaz' : {
				$dane = $this->Uzytkownik->Dane($_SESSION['id_uzytkownik']);
				//print_r($dane);
				$this->Smarty->assign('dane', $dane);
			} break;
			case 'edytuj' : {
				if ($etap < 2){
					$this->Smarty->assign('etap', 2);
					$dane = $this->Uzytkownik->Dane($_SESSION['id_uzytkownik']);
					$this->Smarty->assign('dane', $dane);
				}
				elseif ($etap == 3 && !isset($_SESSION['edytowano_uzytkownika'])){ // uaktualnienie serwisu
					$dane = $_POST;
					unset($dane['etap']);
					//echo 'probuje uaktualnic dane, ';
					if ($this->Uzytkownik->Uaktualnij($dane)){ 
						$this->Smarty->assign('komunikat', 'uzytkownik zedytowany.');
						$this->Smarty->assign('edycja', 'nie');
						session_register('edytowano_uzytkownika');
						$_SESSION['edytowano_uzytkownika'] = 'tak';
						$_SESSION['doWyczyszczenia']['edytowano_uzytkownika'] = 1;
					}
					else{
						$this->Smarty->assign('komunikat', 'Nie mozna zedytowac uzytkownika.');
						$this->Smarty->assign('edycja', 'tak');
						$this->Smarty->assign('etap', 2);
					}
				}
				else{ // odswiezanie strony
					$this->Smarty->assign('edycja', 'nie');
					$dodano = empty($_SESSION['edytowano_uzytkownika']) ? '' : $_SESSION['edytowano_uzytkownika'];
					if ($dodano == 'tak') $this->Smarty->assign('komunikat', 'Nie odswiezaj strony. uzytkownik zostal juz zedytowany.');
				}
			} break;
			default : {
				echo 'dane ...';
			} break;
		}
		$this->Smarty->display('uzytkownik_dane.tpl');
	}
	
	private function PanelAdministratora(){
		$this->Smarty->caching = false;
		$uprawnienia = empty($_SESSION['uprawnienia'])?0:$_SESSION['uprawnienia'];
		$this->Smarty->assign('uprawnienia', $uprawnienia);
		$this->Smarty->assign('komunikat', 'Czyn swoja powinnosc.');
		$this->Naglowek();
		$this->Menu();
		if ($uprawnienia > 1){ 
			$akcja = empty($_GET['akcja'])?'':$_GET['akcja'];
			$etap = empty($_POST['etap'])?'1':$_POST['etap'];
			switch(empty($_GET['sekcja'])?'':$_GET['sekcja']){
				case 'news' : 	$this->AdministracjaNews($akcja, $etap); break;
				case 'serwis' : if ($uprawnienia == 2) $this->AdministracjaSerwis($akcja, $etap); break;
				case 'kategoria' : if ($uprawnienia == 2) $this->AdministracjaKategoria($akcja, $etap);break;
				case 'uzytkownik' : if ($uprawnienia == 2) $this->AdministracjaUzytkownik($akcja, $etap); break;
				case 'strona' : if ($uprawnienia == 2) $this->AdministracjaStrona($akcja, $etap); break;
				default : {
					if (!empty($_SESSION['doWyczyszczenia'])) $this->WyczyscSesje();
					$this->Smarty->display('admin_glowna.tpl'); 
				} break;
			}
		}
		else $this->Smarty->display('admin_glowna.tpl');
		$this->Stopka();
	}
	
	private function AdministracjaNews($akcja, $etap){
		switch($akcja){
			case 'dodaj' : {
				if ($etap == 2 && !isset($_SESSION['dodano_news'])){
					$dane = $_POST;
					unset($dane['etap']);
					//print_r($dane);
					if ($this->News->Dodaj($dane)){ 
						$this->Smarty->assign('komunikat', 'news dodany.');
						$this->Smarty->assign('edycja', 'nie');
						session_register('dodano_news');
						$_SESSION['dodano_news'] = 'tak';
						$_SESSION['doWyczyszczenia']['dodano_news'] = 1;
					}
					else{
						$this->Smarty->assign('komunikat', 'Nie mozna dodac news.');
						$this->Smarty->assign('edycja', 'tak');
					}
				}
				else{ 
					$this->Smarty->assign('edycja', 'tak');
					$dodano = empty($_SESSION['dodano_news']) ? '' : $_SESSION['dodano_news'];
					if ($dodano == 'tak') $this->Smarty->assign('komunikat', 'Poprzedni news zostal dodany.');
					$this->WyczyscSesje();
				}
				foreach ($this->Kategoria_Dane as $nr => $dane){
					$kat[$dane['id_kategoria']] = $dane['nazwa'];
				}
				$this->Smarty->assign('kategorie', $kat);
				foreach ($this->Serwis->DaneAktywnych(false) as $nr => $dane){
					$serw[$dane['id_serwis']] = $dane['nazwa'];
				}
				$this->Smarty->assign('serwisy', $serw);
				$this->Smarty->display('admin_news_dodaj.tpl');
		}  break;
		case 'edytuj' : {
				if ($etap == 1){ // wyswietlenie listy serwisow
					foreach ($this->News->Dane(false, 300) as $nr => $dane){
						$newsy[$dane['id_news']] = $dane['tytul'];
					}
					$this->Smarty->assign('newsy', $newsy);
					$this->Smarty->assign('komunikat', 'Wybierz news, ktory chcesz edytowac.');
					$this->Smarty->assign('biezace', array());
				}
				elseif ($etap == 2){ // wyswietlenie danych serwisu i mozliwosc ich edycji
					$this->Smarty->assign('komunikat', 'Edytuj zmiany...');
					$dane = $this->News->Dane($_POST['id_news']);
					//print_r($dane);
					$dane = $dane;
					$dane['wstep'] = htmlspecialchars($dane['wstep']);
					$dane['tresc'] = htmlspecialchars($dane['tresc']);
					$this->Smarty->assign('biezace', $dane);
					foreach ($this->Kategoria_Dane as $nr => $dane){
						$kategorie[$dane['id_kategoria']] = $dane['nazwa'];
					}
					$this->Smarty->assign('kategorie', $kategorie);
					$wybrane_kategorie = $this->News->Kategorie($_POST['id_news']);
					$this->Smarty->assign('wybrane_kategorie', $wybrane_kategorie);
					foreach ($this->Serwis->DaneAktywnych(false) as $nr => $dane){
						$serwisy[$dane['id_serwis']] = $dane['nazwa'];
					}
					$this->Smarty->assign('serwisy', $serwisy);
					foreach ($this->Uzytkownik->Dane(false) as $nr => $dane){
						if ($dane['id_prawo'] > 1) $uzytkownicy[$dane['id_uzytkownik']] = $dane['nick'];
					}
					$this->Smarty->assign('uzytkownicy', $uzytkownicy);
					$zarchowizowany = array(0 => 'nie', 1 => 'tak');
					$this->Smarty->assign('zarchiwizowany', $zarchowizowany);
				}
				elseif ($etap == 3 && !isset($_SESSION['edytowano_news'])){ // uaktualnienie serwisu
					$dane = $_POST;
					unset($dane['etap']);
					//echo 'probuje uaktualnic dane, ';
					if ($this->News->Uaktualnij($dane)){ 
						$this->Smarty->assign('komunikat', 'news zedytowany.');
						$this->Smarty->assign('edycja', 'nie');
						session_register('edytowano_news');
						$_SESSION['edytowano_news'] = 'tak';
						$_SESSION['doWyczyszczenia']['edytowano_news'] = 1;
					}
					else{
						$this->Smarty->assign('komunikat', 'Nie mozna zedytowac news.');
						$this->Smarty->assign('edycja', 'tak');
						$etap = 2;
					}
				}
				else{ // odswiezanie strony
					$this->Smarty->assign('edycja', 'nie');
					$dodano = empty($_SESSION['edytowano_news']) ? '' : $_SESSION['edytowano_news'];
					if ($dodano == 'tak') $this->Smarty->assign('komunikat', 'Nie odswiezaj strony. news zostal juz zedytowany.');
				}
				$this->Smarty->assign('etap', $etap);
				$this->Smarty->display('admin_news_edytuj.tpl');	
			} break;
		case 'usun' : if ($_SESSION['uprawnienia'] == 2) {
				if ($etap == 1){ // wyswietlenie listy serwisow
					foreach ($this->News->Dane(false, 100) as $nr => $dane){
						$newsy[$dane['id_news']] = $dane['tytul'];
					}
					$this->Smarty->assign('newsy', $newsy);
					$this->Smarty->assign('komunikat', 'Wybierz news, ktory chcesz edytowac.');
					$this->Smarty->assign('biezace', array());
					$this->Smarty->assign('edycja', 'tak');
				}
				else if ($etap == 2 && !isset($_SESSION['usunieto_news'])){
					$dane = $_POST;
					unset($dane['etap']);
					//print_r($dane);
					if ($this->News->Usun($dane['id_news'])){ 
						$this->Smarty->assign('komunikat', 'news usuniety.');
						$this->Smarty->assign('edycja', 'nie');
						session_register('usunieto_news');
						$_SESSION['usunieto_news'] = 'tak';
						$_SESSION['doWyczyszczenia']['usunieto_news'] = 1;
					}
					else{
						$this->Smarty->assign('komunikat', 'Nie mozna usunieto news.');
						$this->Smarty->assign('edycja', 'tak');
					}
				}
				else{ 
					$this->Smarty->assign('edycja', 'nie');
					$dodano = empty($_SESSION['usunieto_news']) ? '' : $_SESSION['usunieto_news'];
					if ($dodano == 'tak') $this->Smarty->assign('komunikat', 'Nie odswiezaj strony. news zostal juz usunieto.');
				}
				$this->Smarty->display('admin_news_usun.tpl');
			}  break;
		default : echo 'mozliwosci pracy z newsami'; break;
		}
	}
	
	private function AdministracjaSerwis($akcja, $etap){
		switch($akcja){
			case 'dodaj' : {
				if ($etap == 2 && !isset($_SESSION['dodano_serwis'])){
					$dane = $_POST;
					unset($dane['etap']);
					if ($this->Serwis->Dodaj($dane)){ 
						$this->Smarty->assign('komunikat', 'Serwis dodany.');
						$this->Smarty->assign('edycja', 'nie');
						session_register('dodano_serwis');
						$_SESSION['dodano_serwis'] = 'tak';
						$_SESSION['doWyczyszczenia']['dodano_serwis'] = 1;
					}
					else{
						$this->Smarty->assign('komunikat', 'Nie mozna dodac serwisu.');
						$this->Smarty->assign('edycja', 'tak');
					}
				}
				else{ 
					$this->Smarty->assign('edycja', 'tak');
					$dodano = empty($_SESSION['dodano_serwis']) ? '' : $_SESSION['dodano_serwis'];
					if ($dodano == 'tak') $this->Smarty->assign('komunikat', 'Nie odswiezaj strony. Serwis zostal juz dodany.');
				}
				$this->Smarty->display('admin_serwis_dodaj.tpl');	
			} break;
			case 'edytuj' : {
				if ($etap == 1){ // wyswietlenie listy serwisow
					foreach ($this->Serwis_Dane as $nr => $dane){
						$serw[$dane['id_serwis']] = $dane['nazwa'];
					}
					$this->Smarty->assign('serwisy', $serw);
					$this->Smarty->assign('komunikat', 'Wybierz serwis, ktory chcesz edytowac.');
					$this->Smarty->assign('biezace', array());
				}
				elseif ($etap == 2){ // wyswietlenie danych serwisu i mozliwosc ich edycji
					$this->Smarty->assign('komunikat', 'Edytuj zmiany...');
					$dane = $this->Serwis->Dane($_POST['id_serwis']);
					//print_r($dane);
					$dane['bot_wzorzec'] = htmlspecialchars($dane['bot_wzorzec']);
					$this->Smarty->assign('biezace', $dane);
					$tmp_aktywny = array(0 => 'nie', 1 => 'tak');
					$this->Smarty->assign('tmp_aktywny', $tmp_aktywny);
				}
				elseif ($etap == 3 && !isset($_SESSION['edytowano_serwis'])){ // uaktualnienie serwisu
					$dane = $_POST;
					unset($dane['etap']);
					//echo 'probuje uaktualnic dane, ';
					if ($this->Serwis->Uaktualnij($dane)){ 
						$this->Smarty->assign('komunikat', 'Serwis zedytowany.');
						$this->Smarty->assign('edycja', 'nie');
						session_register('edytowano_serwis');
						$_SESSION['edytowano_serwis'] = 'tak';
						$_SESSION['doWyczyszczenia']['edytowano_serwis'] = 1;
					}
					else{
						$this->Smarty->assign('komunikat', 'Nie mozna zedytowac serwisu.');
						$this->Smarty->assign('edycja', 'tak');
						$etap = 2;
					}
				}
				else{ // odswiezanie strony
					$this->Smarty->assign('edycja', 'nie');
					$dodano = empty($_SESSION['edytowano_serwis']) ? '' : $_SESSION['edytowano_serwis'];
					if ($dodano == 'tak') $this->Smarty->assign('komunikat', 'Nie odswiezaj strony. Serwis zostal juz zedytowany.');
				}
				$this->Smarty->assign('etap', $etap);
				$this->Smarty->display('admin_serwis_edytuj.tpl');	
			} break;
			case 'uaktualnij_statystyki' : {
				if ($this->Serwis->UaktualnijStatystyki()) echo 'Statystyki serwisow zostaly uaktualnione';
			} break;
			default : echo 'serwis'; break;
		}
	}
	
	private function AdministracjaKategoria($akcja, $etap){
		switch($akcja){
			case 'dodaj' : {
				if ($etap == 2 && !isset($_SESSION['dodano_kategorie'])){
					$dane = $_POST;
					unset($dane['etap']);
					if ($this->Kategoria->Dodaj($dane)){ 
						$this->Smarty->assign('komunikat', 'Kategoria dodana.');
						$this->Smarty->assign('edycja', 'nie');
						session_register('dodano_kategorie');
						$_SESSION['dodano_kategorie'] = 'tak';
						$_SESSION['doWyczyszczenia']['dodano_kategorie'] = 1;
					}
					else{
						$this->Smarty->assign('komunikat', 'Nie mozna dodac kategorii.');
						$this->Smarty->assign('edycja', 'tak');
					}
				}
				else{ 
					$this->Smarty->assign('edycja', 'tak');
					$dodano = empty($_SESSION['dodano_kategorie']) ? '' : $_SESSION['dodano_kategorie'];
					if ($dodano == 'tak') $this->Smarty->assign('komunikat', 'Nie odswiezaj strony. Kategoria zostala juz dodana.');
				}
				$this->Smarty->display('admin_kategoria_dodaj.tpl');
			}  break;
			case 'edytuj' : {
				if ($etap == 1){ // wyswietlenie listy serwisow
					foreach ($this->Kategoria_Dane as $nr => $dane){
						$kat[$dane['id_kategoria']] = $dane['nazwa'];
					}
					$this->Smarty->assign('kategorie', $kat);
					$this->Smarty->assign('komunikat', 'Wybierz kategoria, ktory chcesz edytowac.');
					$this->Smarty->assign('biezace', array());
				}
				elseif ($etap == 2){ // wyswietlenie danych serwisu i mozliwosc ich edycji
					$this->Smarty->assign('komunikat', 'Edytuj zmiany...');
					$dane = $this->Kategoria->Dane($_POST['id_kategoria']);
					//print_r($dane);
					$this->Smarty->assign('biezace', $dane[0]);
				}
				elseif ($etap == 3 && !isset($_SESSION['edytowano_kategorie'])){ // uaktualnienie serwisu
					$dane = $_POST;
					unset($dane['etap']);
					//echo 'probuje uaktualnic dane, ';
					if ($this->Kategoria->Uaktualnij($dane)){ 
						$this->Smarty->assign('komunikat', 'kategoria zedytowany.');
						$this->Smarty->assign('edycja', 'nie');
						session_register('edytowano_kategorie');
						$_SESSION['edytowano_kategorie'] = 'tak';
						$_SESSION['doWyczyszczenia']['edytowano_kategorie'] = 1;
					}
					else{
						$this->Smarty->assign('komunikat', 'Nie mozna zedytowac kategoria.');
						$this->Smarty->assign('edycja', 'tak');
						$etap = 2;
					}
				}
				else{ // odswiezanie strony
					$this->Smarty->assign('edycja', 'nie');
					$dodano = empty($_SESSION['edytowano_kategorie']) ? '' : $_SESSION['edytowano_kategorie'];
					if ($dodano == 'tak') $this->Smarty->assign('komunikat', 'Nie odswiezaj strony. kategoria zostal juz zedytowany.');
				}
				$this->Smarty->assign('etap', $etap);
				$this->Smarty->display('admin_kategoria_edytuj.tpl');	
			} break;
			case 'uaktualnij_statystyki' : {
				if ($this->Kategoria->UaktualnijStatystyki()) echo 'Statystyki kategorii zostaly uaktualnione';
			} break;
			default : echo 'kategoria'; break;
		}
	}
	
	private function AdministracjaUzytkownik($akcja, $etap){
		switch($akcja){
			case 'edytuj' : {
				if ($etap == 1){ // wyswietlenie listy serwisow
					foreach ($this->Uzytkownik->Dane(false) as $nr => $dane){
						$uzytkownicy[$dane['id_uzytkownik']] = $dane['nick'];
					}
					$this->Smarty->assign('uzytkownicy', $uzytkownicy);
					$this->Smarty->assign('komunikat', 'Wybierz uzytkownika, ktory chcesz edytowac.');
					$this->Smarty->assign('biezace', array());
				}
				elseif ($etap == 2){ // wyswietlenie danych serwisu i mozliwosc ich edycji
					$this->Smarty->assign('komunikat', 'Edytuj zmiany...');
					$dane = $this->Uzytkownik->Dane($_POST['id_uzytkownik']);
					//print_r($dane);
					$this->Smarty->assign('biezace', $dane);
					foreach ($this->Uzytkownik->Prawa(false) as $nr => $dane){
						$tmp_prawa[$dane['id_prawo']] = $dane['nazwa'];
					}
					$this->Smarty->assign('tmp_prawa', $tmp_prawa);
				}
				elseif ($etap == 3 && !isset($_SESSION['edytowano_uzytkownika'])){ // uaktualnienie serwisu
					$dane = $_POST;
					unset($dane['etap']);
					//echo 'probuje uaktualnic dane, ';
					if ($this->Uzytkownik->Uaktualnij($dane)){ 
						$this->Smarty->assign('komunikat', 'uzytkownik zedytowany.');
						$this->Smarty->assign('edycja', 'nie');
						session_register('edytowano_uzytkownika');
						$_SESSION['edytowano_uzytkownika'] = 'tak';
						$_SESSION['doWyczyszczenia']['edytowano_uzytkownika'] = 1;
					}
					else{
						$this->Smarty->assign('komunikat', 'Nie mozna zedytowac uzytkownika.');
						$this->Smarty->assign('edycja', 'tak');
						$etap = 2;
					}
				}
				else{ // odswiezanie strony
					$this->Smarty->assign('edycja', 'nie');
					$dodano = empty($_SESSION['edytowano_uzytkownika']) ? '' : $_SESSION['edytowano_uzytkownika'];
					if ($dodano == 'tak') $this->Smarty->assign('komunikat', 'Nie odswiezaj strony. kategoria zostal juz zedytowany.');
				}
				$this->Smarty->assign('etap', $etap);
				$this->Smarty->display('admin_uzytkownik_edytuj.tpl');	
			} break;
			case 'dodaj_prawo' : {
				if ($etap == 2 && !isset($_SESSION['dodano_prawo'])){
					$dane = $_POST;
					unset($dane['etap']);
					if ($this->Uzytkownik->DodajPrawo($dane)){ 
						$this->Smarty->assign('komunikat', 'prawo dodany.');
						$this->Smarty->assign('edycja', 'nie');
						session_register('dodano_serwis');
						$_SESSION['dodano_prawo'] = 'tak';
						$_SESSION['doWyczyszczenia']['dodano_prawo'] = 1;
					}
					else{
						$this->Smarty->assign('komunikat', 'Nie mozna dodac prawo.');
						$this->Smarty->assign('edycja', 'tak');
					}
				}
				else{ 
					$this->Smarty->assign('edycja', 'tak');
					$dodano = empty($_SESSION['dodano_prawo']) ? '' : $_SESSION['dodano_prawo'];
					if ($dodano == 'tak') $this->Smarty->assign('komunikat', 'Nie odswiezaj strony. prawo zostal juz dodany.');
				}
				$this->Smarty->display('admin_uzytkownik_dodaj_prawo.tpl');	
			} break;
			case 'edytuj_prawa' : {
				if ($etap == 1){ // wyswietlenie listy serwisow
					foreach ($this->Uzytkownik->Prawa(false) as $nr => $dane){
						$prawa[$dane['id_prawo']] = $dane['nazwa'];
					}
					$this->Smarty->assign('prawa', $prawa);
					$this->Smarty->assign('komunikat', 'Wybierz prawo, ktory chcesz edytowac.');
					$this->Smarty->assign('biezace', array());
				}
				elseif ($etap == 2){ // wyswietlenie danych serwisu i mozliwosc ich edycji
					$this->Smarty->assign('komunikat', 'Edytuj zmiany...');
					$dane = $this->Uzytkownik->Prawa($_POST['id_prawo']);
					$this->Smarty->assign('biezace', $dane[0]);
				}
				elseif ($etap == 3 && !isset($_SESSION['edytowano_prawo'])){ // uaktualnienie serwisu
					$dane = $_POST;
					unset($dane['etap']);
					//echo 'probuje uaktualnic prawo, ';
					if ($this->Uzytkownik->UaktualnijPrawa($dane)){ 
						$this->Smarty->assign('komunikat', 'prawo zedytowany.');
						$this->Smarty->assign('edycja', 'nie');
						session_register('edytowano_prawo');
						$_SESSION['edytowano_prawo'] = 'tak';
						$_SESSION['doWyczyszczenia']['edytowano_prawo'] = 1;
					}
					else{
						$this->Smarty->assign('komunikat', 'Nie mozna zedytowac prawo.');
						$this->Smarty->assign('edycja', 'tak');
						$etap = 2;
					}
				}
				else{ // odswiezanie strony
					$this->Smarty->assign('edycja', 'nie');
					$dodano = empty($_SESSION['edytowano_prawo']) ? '' : $_SESSION['edytowano_prawo'];
					if ($dodano == 'tak') $this->Smarty->assign('komunikat', 'Nie odswiezaj strony. prawo zostal juz zedytowany.');
				}
				$this->Smarty->assign('etap', $etap);
				$this->Smarty->display('admin_uzytkownik_edytuj_prawa.tpl');	
			} break;
			case 'uaktualnij_statystyki' : {
				if ($this->Uzytkownik->UaktualnijStatystyki()) echo 'Statystyki uzytkownikow zostaly uaktualnione';
			} break;
			default : echo 'uzytkownik'; break;
		}
	}
	
	private function AdministracjaStrona($akcja, $etap){
		switch($akcja){
			case 'edytuj' : {
				if ($etap == 2 && !isset($_SESSION['edytowano_strone'])){
					$dane = $_POST;
					unset($dane['etap']);
					if ($this->BD->Update('glowne_ustawienia', $dane, 'id_ustawienie', true)){ 
						$this->Smarty->assign('komunikat', 'Ustawienia strony zaktualizowane.');
						$this->Smarty->assign('edycja', 'nie');
						session_register('edytowano_strone');
						$_SESSION['edytowano_strone'] = 'tak';
						$_SESSION['doWyczyszczenia']['edytowano_strone'] = 1;
					}
					else{
						$this->Smarty->assign('komunikat', 'Nie mozna dodac kategorii.');
						$this->Smarty->assign('edycja', 'tak');
					}
				}
				else{ 
					$this->Smarty->assign('edycja', 'tak');
					$dodano = empty($_SESSION['edytowano_strone']) ? '' : $_SESSION['edytowano_strone'];
					if ($dodano == 'tak') $this->Smarty->assign('komunikat', 'Nie odswiezaj strony. Strona juz uaktualniona.');
				}
				if ($etap == 1){
					$sql = "SELECT * FROM `glowne_ustawienia`;";
					$dane = $this->BD->Zapytanie($sql, true, true);
					$dane = $dane[0];
					//$dane['przyjaciele'] = htmlspecialchars($dane['przyjaciele']);
					//$dane['reklama'] = htmlspecialchars($dane['reklama']);
					$this->Smarty->assign('biezace', $dane);
				}
				$this->Smarty->assign('etap', $etap);
				$this->Smarty->display('admin_strona_edycja.tpl');
			} break;
		}
	}
	
	private function Statystyki(){
		//$serwisy = $this->Serwis->Statystyki(20, 'klikniec');
		//print_r($serwisy);
		//$this->Smarty->assign('serwisy', $serwisy);
		//$kategorie = $this->Kategoria->Statystyki(false, 'newsow');
		//$this->Smarty->assign('kategorie', $kategorie);
		
		$newsy_ten_miesiac = $this->News->Statystyki('newsy', 'ten_miesiac', 'klikniecia');
		$newsy_poprzedni_miesiac = $this->News->Statystyki('newsy', 'poprzedni_miesiac', 'klikniecia');
		$serwisy_ten_miesiac_recenzje = $this->News->Statystyki('serwisy', 'ten_miesiac', 'liczba');
		$serwisy_ten_miesiac_klikniecia = $this->News->Statystyki('serwisy');
		$serwisy_poprzedni_miesiac_recenzje = $this->News->Statystyki('serwisy', 'poprzedni_miesiac', 'liczba');
		$serwisy_poprzedni_miesiac_klikniecia = $this->News->Statystyki('serwisy', 'poprzedni_miesiac', 'klikniecia');
		$newsy_calosc_klikniecia = $this->News->Statystyki('newsy', 'calosc', 'klikniecia', 50);
		$serwisy_calosc_recenzje = $this->News->Statystyki('serwisy', 'calosc', 'liczba', 20);
		$serwisy_calosc_klikniecia = $this->News->Statystyki('serwisy', 'calosc', 'klikniecia', 20);
		//$kategorie_calosc_recenzje = $this->News->Statystyki('kategorie', 'calosc', 'liczba');
		//$kategorie_calosc_klikniecia = $this->News->Statystyki('kategorie', 'calosc', 'klikniecia');
		
		$this->Smarty->assign('news_tm', $newsy_ten_miesiac);
		$this->Smarty->assign('serw_tm_r', $serwisy_ten_miesiac_recenzje);
		$this->Smarty->assign('serw_tm_k', $serwisy_ten_miesiac_klikniecia);
		$this->Smarty->assign('news_pm', $newsy_poprzedni_miesiac);
		$this->Smarty->assign('serw_pm_r', $serwisy_poprzedni_miesiac_recenzje);
		$this->Smarty->assign('serw_pm_k', $serwisy_poprzedni_miesiac_klikniecia);
		$this->Smarty->assign('news_calosc', $newsy_calosc_klikniecia);
		$this->Smarty->assign('serw_calosc_r', $serwisy_calosc_recenzje);
		$this->Smarty->assign('serw_calosc_k', $serwisy_calosc_klikniecia);
		//$this->Smarty->assign('kat_calosc_r', $kategorie_calosc_recenzje);
		//$this->Smarty->assign('kat_calosc_k', $kategorie_calosc_klikniecia);
		
		
		$this->Smarty->assign('kat', $this->Kategoria_Dane);
		$this->Smarty->assign('serw', $this->Serwis_Dane);
		
		$this->Naglowek();
		$this->Menu();
		$this->Smarty->display('statystyki.tpl');
		$this->Stopka();
	}
	
	private function NewsTop(){
		$newsy = $this->News->Statystyki('newsy', 'dzisiaj', 'klikniecia', 5);
		if (empty($newsy)){
			$newsy = $this->News->Statystyki('newsy', 'wczoraj', 'klikniecia', 5);
		}
		//print_r($newsy);
		$this->Smarty->assign('newsy', $newsy);
		$this->Smarty->assign('kat', $this->Kategoria_Dane);
		$this->Smarty->assign('serw', $this->Serwis_Dane);
		
		$this->Naglowek();
		$this->Menu();
		$this->Smarty->display('newsy.tpl');
		$this->Stopka();
	}
	
	private function RSS(){
		$dane['liczba'] = 20;
		$newsy = $this->News->Pokaz($dane);
		unset($newsy['liczba_wszystkich']);
		//var_dump($newsy);
		foreach ($newsy as $nr => $dane){
			$newsy[$nr]['data'] = date("D, d M Y H:i:s ", strtotime($dane['data'])) . "+0100";
		}
		$this->Smarty->assign('newsy', $newsy);
		$this->Smarty->assign('serw', $this->Serwis_Dane);

		$this->Smarty->display('rss.tpl');
	}
	
	private function online(){
	    $myip = $_SERVER['REMOTE_ADDR'];
	    $timeout = 300; # czas w sekundach po jakim usuwany jest wpis uzutkownika
	    $filename = 'online.dat'; # nazwa pliku lub sciezka dostepu do niego
	    $file = file($filename);
	    $count = count($file);
	    $add = true;
	    $online = 0;
	    $fopen = fopen($filename, "w");
	    flock($fopen, LOCK_EX);
	    for($i=0; $i<$count; $i++){
	        $data = explode('|', chop($file[$i]));
	        if($data[0]==$myip){
	            fputs($fopen, $myip.'|'.time()."\\r\\n");
	            $add = false;
	            $online++;
	        }
	        else {
	            if($data[1]>=(time()-$timeout)) {
	                fputs($fopen, $data[0].'|'.$data[1]."\\r\\n");
	                $online++;
	            }
	        }
	    }
	    if($add) {
	        fputs($fopen, $myip.'|'.time()."\\r\\n");
	        $online++;
	    }
	    flock($fopen, LOCK_UN);
	    fclose($fopen);
	    return $online;
	}
	
	
}
?>